state.name
 [1] "Alabama"        "Alaska"        
 [3] "Arizona"        "Arkansas"      
 [5] "California"     "Colorado"      
 [7] "Connecticut"    "Delaware"      
 [9] "Florida"        "Georgia"       
[11] "Hawaii"         "Idaho"         
[13] "Illinois"       "Indiana"       
[15] "Iowa"           "Kansas"        
[17] "Kentucky"       "Louisiana"     
[19] "Maine"          "Maryland"      
[21] "Massachusetts"  "Michigan"      
[23] "Minnesota"      "Mississippi"   
[25] "Missouri"       "Montana"       
[27] "Nebraska"       "Nevada"        
[29] "New Hampshire"  "New Jersey"    
[31] "New Mexico"     "New York"      
[33] "North Carolina" "North Dakota"  
[35] "Ohio"           "Oklahoma"      
[37] "Oregon"         "Pennsylvania"  
[39] "Rhode Island"   "South Carolina"
[41] "South Dakota"   "Tennessee"     
[43] "Texas"          "Utah"          
[45] "Vermont"        "Virginia"      
[47] "Washington"     "West Virginia" 
[49] "Wisconsin"      "Wyoming"       
# install.packages("maps")
# library(maps)
# x <- map("world", plot=FALSE)
# glimpse(x)
# x$names

SEER China vs others

https://www.rdocumentation.org/packages/bayesTFR/versions/6.1-2/topics/country.names

https://stat.ethz.ch/R-manual/R-devel/library/datasets/html/state.html

Who works on SEER

If you want to see the code used in the analysis please click the code button on the right upper corner or throughout the page.
Select from the tabs below.


Aim

Aim:


Data retriveal from PubMed using EDirect

Articles are downloaded as xml.

Parsed with column specification:
cols(
  PMID = col_integer(),
  year = col_character(),
  Affiliations = col_character()
)
Parsed with column specification:
cols(
  abb = col_character(),
  country = col_character()
)
[1] 6240

At the time of the research the number of articles with ‘SEER Program’[Mesh] formula is 6240.

NA

        
         China Others Sum
  Others    19      0  19
  USA       15    165 180
  Sum       34    165 199

LS0tCnRpdGxlOiAiQmlibGlvZ3JhcGhpYyBTdHVkaWVzIgpzdWJ0aXRsZTogIlNFRVIgUmVzZWFyY2ggUGVyIENvdW50cmllcyAvIFdobyBpcyBkb2luZyBTRUVSIFJlc2VhcmNoPyIKYXV0aG9yOiAiU2VyZGFyIEJhbGPEsSwgTUQsIFBhdGhvbG9naXN0IgpkYXRlOiAnYHIgZm9ybWF0KFN5cy5EYXRlKCkpYCcKb3V0cHV0OiAKICBodG1sX25vdGVib29rOiAKICAgIGNvZGVfZm9sZGluZzogaGlkZQogICAgZmlnX2NhcHRpb246IHllcwogICAgaGlnaGxpZ2h0OiBrYXRlCiAgICB0aGVtZTogY2VydWxlYW4KICAgIHRvY19mbG9hdDogeWVzCiAgaHRtbF9kb2N1bWVudDogCiAgICBjb2RlX2ZvbGRpbmc6IGhpZGUKICAgIGRmX3ByaW50OiBrYWJsZQogICAgZmlnX2NhcHRpb246IHllcwogICAgaGlnaGxpZ2h0OiBrYXRlCiAgICBrZWVwX21kOiB5ZXMKICAgIHRoZW1lOiBjZXJ1bGVhbgogICAgdG9jX2Zsb2F0OiB5ZXMKLS0tCgoKCmBgYHtyIGdsb2JhbF9vcHRpb25zLCBpbmNsdWRlPUZBTFNFfQprbml0cjo6b3B0c19jaHVuayRzZXQoZmlnLndpZHRoID0gMTIsIGZpZy5oZWlnaHQgPSA4LCBmaWcucGF0aCA9ICdmaWd1cmUvJywgZWNobyA9IEZBTFNFLCB3YXJuaW5nID0gRkFMU0UsIG1lc3NhZ2UgPSBGQUxTRSwgZXJyb3IgPSBGQUxTRSwgZXZhbCA9IFRSVUUsIHRpZHkgPSBUUlVFLCBjb21tZW50ID0gTkEpCmBgYAoKYGBge3IgbGlicmFyeSwgaW5jbHVkZT1GQUxTRX0KbGlicmFyeSh0aWR5dmVyc2UpCmBgYAoKCmBgYHtyfQpzdGF0ZS5uYW1lCmBgYAoKCmBgYHtyfQojIGluc3RhbGwucGFja2FnZXMoIm1hcHMiKQojIGxpYnJhcnkobWFwcykKIyB4IDwtIG1hcCgid29ybGQiLCBwbG90PUZBTFNFKQojIGdsaW1wc2UoeCkKIyB4JG5hbWVzCgpgYGAKCmBgYHtyfQppbnN0YWxsLnBhY2thZ2VzKCJyd29ybGRtYXAiKQpsaWJyYXJ5KHJ3b3JsZG1hcCkKdmlnbmV0dGUoJ3J3b3JsZG1hcCcpCmRhdGEoY291bnRyeUV4RGF0YSkKY291bnRyeUV4RGF0YQpgYGAKCgoKCgoKCgoKCgoKU0VFUiBDaGluYSB2cyBvdGhlcnMKCmh0dHBzOi8vd3d3LnJkb2N1bWVudGF0aW9uLm9yZy9wYWNrYWdlcy9iYXllc1RGUi92ZXJzaW9ucy82LjEtMi90b3BpY3MvY291bnRyeS5uYW1lcwoKCmh0dHBzOi8vc3RhdC5ldGh6LmNoL1ItbWFudWFsL1ItZGV2ZWwvbGlicmFyeS9kYXRhc2V0cy9odG1sL3N0YXRlLmh0bWwKCgoKCiMgV2hvIHdvcmtzIG9uIFNFRVIgey50YWJzZXQgLnRhYnNldC1mYWRlIC50YWJzZXQtcGlsbHN9CgpJZiB5b3Ugd2FudCB0byBzZWUgdGhlIGNvZGUgdXNlZCBpbiB0aGUgYW5hbHlzaXMgcGxlYXNlIGNsaWNrIHRoZSBjb2RlIGJ1dHRvbiBvbiB0aGUgcmlnaHQgdXBwZXIgY29ybmVyIG9yIHRocm91Z2hvdXQgdGhlIHBhZ2UuICAKU2VsZWN0IGZyb20gdGhlIHRhYnMgYmVsb3cuCgotLS0KCiMjIEFpbSAKCioqQWltOioqCgoKCi0tLQoKIyMgRGF0YSByZXRyaXZlYWwgZnJvbSBQdWJNZWQgdXNpbmcgRURpcmVjdCAKCkFydGljbGVzIGFyZSBkb3dubG9hZGVkIGFzIGB4bWxgLgoKYGBge3IgU2VhcmNoIFB1Yk1lZCB3cml0ZSBhbGwgZGF0YSBhcyB4bWwsIGV2YWw9RkFMU0UsIGluY2x1ZGU9RkFMU0V9Cm15VGVybSA8LSByc3R1ZGlvYXBpOjp0ZXJtaW5hbENyZWF0ZShzaG93ID0gRkFMU0UpCnJzdHVkaW9hcGk6OnRlcm1pbmFsU2VuZCgKICAgIG15VGVybSwKICAgICJlc2VhcmNoIC1kYiBwdWJtZWQgLXF1ZXJ5IFwiJ1NFRVIgUHJvZ3JhbSdbTWVzaF0KXCIgLWRhdGV0eXBlIFBEQVQgLW1pbmRhdGUgMTgwMCAtbWF4ZGF0ZSAzMDAwIHwgZWZldGNoIC1mb3JtYXQgeG1sID4gZGF0YS9wdWJtZWRfcmVzdWx0X1NFRVJfTWVTSC54bWwgXG4iCikKU3lzLnNsZWVwKDEpCnJlcGVhdCB7CiAgICBTeXMuc2xlZXAoMC4xKQogICAgaWYgKHJzdHVkaW9hcGk6OnRlcm1pbmFsQnVzeShteVRlcm0pID09IEZBTFNFKSB7CiAgICAgICAgcHJpbnQoIkNvZGUgRXhlY3V0ZWQiKQogICAgICAgIGJyZWFrCiAgICB9Cn0KYGBgCgoKCmBgYHtyIGV4dHJhY3Qgam91cm5hbCBuYW1lcyBmcm9tIGFsbCBkYXRhIHhtbCwgbWVzc2FnZT1GQUxTRSwgd2FybmluZz1GQUxTRX0KbXlUZXJtIDwtIHJzdHVkaW9hcGk6OnRlcm1pbmFsQ3JlYXRlKHNob3cgPSBGQUxTRSkKcnN0dWRpb2FwaTo6dGVybWluYWxTZW5kKApteVRlcm0sCiJ4dHJhY3QgLWlucHV0IGRhdGEvcHVibWVkX3Jlc3VsdF9TRUVSX01lU0gueG1sIC1wYXR0ZXJuIFB1Ym1lZEFydGljbGUgLXNlcCAnICcgLWRlZiAnbmEnIC1lbGVtZW50IE1lZGxpbmVDaXRhdGlvbi9QTUlEIFB1YkRhdGUvWWVhciBBZmZpbGlhdGlvbj4gZGF0YS9TRUVSX2NvdW50cmllcy5jc3YgXG4iCikKU3lzLnNsZWVwKDEpCnJlcGVhdCB7ClN5cy5zbGVlcCgwLjEpCmlmIChyc3R1ZGlvYXBpOjp0ZXJtaW5hbEJ1c3kobXlUZXJtKSA9PSBGQUxTRSkgewpwcmludCgiQ29kZSBFeGVjdXRlZCIpCmJyZWFrCn0KfQpgYGAKCgpgYGB7cn0KbGlicmFyeShyZWFkcikKU0VFUl9jb3VudHJpZXMgPC0gcmVhZF9kZWxpbSgiZGF0YS9TRUVSX2NvdW50cmllcy5jc3YiLCAKICAgICJcdCIsIGVzY2FwZV9kb3VibGUgPSBGQUxTRSwgY29sX25hbWVzID0gYygiUE1JRCIsICJ5ZWFyIiwgIkFmZmlsaWF0aW9ucyIpLCAKICAgIG5hID0gIk5BIiwgdHJpbV93cyA9IFRSVUUpCiMgVmlldyhTRUVSX2NvdW50cmllcykKYGBgCgpgYGB7cn0KY291bnRyaWVzIDwtIHJlYWRfZGVsaW0oImRhdGEvY291bnRyaWVzLnR4dCIsIGRlbGltID0gInwiLCBjb2xfbmFtZXMgPSBjKCJhYmIiLCAiY291bnRyeSIpKQoKY291bnRyeSA8LSBjb3VudHJpZXMkY291bnRyeQoKY291bnRyeSA8LSBjKGNvdW50cnksIHN0YXRlLm5hbWUpCgpjb3VudHJ5WzgwXSA8LSAiR2VvcmdpYV8iCgpgYGAKCgoKYGBge3J9CiMgU0VFUl9jb3VudHJpZXMgPC0gY2JpbmQoU0VFUl9jb3VudHJpZXMsIHNldE5hbWVzKGxhcHBseShjb3VudHJ5LCBmdW5jdGlvbih4KSB4PU5BKSwgY291bnRyeSkpCgojIG5hbWVzKFNFRVJfY291bnRyaWVzKVsyNTRdIDwtICJHZW9yZ2lhVVNBIgoKCmBgYAoKYGBge3J9CiMgZ3JlcGwocGF0dGVybiA9ICJDaGluYSIsIHggPSBTRUVSX2NvdW50cmllcyRBZmZpbGlhdGlvbnMpCmBgYAoKCmBgYHtyfQojIGRlbmVtZTEgPC0gZ3JlcGwocGF0dGVybiA9IGNvdW50cnlbNDRdLCB4ID0gU0VFUl9jb3VudHJpZXMkQWZmaWxpYXRpb25zKQogICAgCiMgZGVuZW1lMiA8LSBzYXBwbHkoY291bnRyeSwgZnVuY3Rpb24oeCkgZ3JlcGwoeCwgU0VFUl9jb3VudHJpZXMkQWZmaWxpYXRpb25zKSkKCiMgc3VtKGRlbmVtZTEgIT0gZGVuZW1lMlssNDRdKQoKYGBgCgpgYGB7cn0KIyBkZW5lbWUyIDwtIGFzLmRhdGEuZnJhbWUoZGVuZW1lMikKCiMgc3VtKGRlbmVtZTIkVHVya2V5KQpgYGAKCmBgYHtyfQpTRUVSX2NvdW50cmllcyA8LSBjYmluZChTRUVSX2NvdW50cmllcywgc2FwcGx5KGNvdW50cnksIGZ1bmN0aW9uKHgpIGdyZXBsKHgsIFNFRVJfY291bnRyaWVzJEFmZmlsaWF0aW9ucykpKQpgYGAKCgpgYGB7cn0KZGltKFNFRVJfY291bnRyaWVzKVsxXQpgYGAKCkF0IHRoZSB0aW1lIG9mIHRoZSByZXNlYXJjaCB0aGUgbnVtYmVyIG9mIGFydGljbGVzIHdpdGggJ1NFRVIgUHJvZ3JhbSdbTWVzaF0gZm9ybXVsYSBpcyBgciBkaW0oU0VFUl9jb3VudHJpZXMpWzFdYC4KCmBgYHtyfQojIGRlbmVtZSA8LSBjb2xTdW1zKFNFRVJfY291bnRyaWVzWywtKDE6MyldKQoKIyBkZW5lbWUgPC0gYXMuZGF0YS5mcmFtZShkZW5lbWUpCgojIGRlbmVtZSA8LSByb3duYW1lc190b19jb2x1bW4oZGVuZW1lLCB2YXIgPSAiY291bnRyaWVzIikKCiMgbmFtZXMoZGVuZW1lKSA8LSBjKCJjb3VudHJpZXMiLCAibnVtYmVyIikKCiMgZGVuZW1lICU+JSBhcnJhbmdlKGRlc2MobnVtYmVyKSkKCgpgYGAKCmBgYHtyfQpTRUVSX2NvdW50cmllc1tTRUVSX2NvdW50cmllcyA9PSBGQUxTRV0gPC0gMAoKU0VFUl9jb3VudHJpZXNbU0VFUl9jb3VudHJpZXMgPT0gVFJVRV0gPC0gMQoKYGBgCgoKCmBgYHtyfQpjb3VudHJ5VG90YWxzIDwtIFNFRVJfY291bnRyaWVzICU+JSAKICBzZWxlY3QoLWMoMTozKSkgJT4lIAogIHN1bW1hcmlzZV9hbGwoZnVucyhzdW0pKSAKCmNvdW50cnlUb3RhbHNbd2hpY2goY291bnRyeVRvdGFscz4wKV0KCnB1Ymxpc2hlckNvdW50cmllcyA8LSBuYW1lcyhjb3VudHJ5VG90YWxzW3doaWNoKGNvdW50cnlUb3RhbHM+MCldKQoKU0VFUl9jb3VudHJpZXMgPC0gU0VFUl9jb3VudHJpZXMgJT4lIAogIHNlbGVjdChjKDE6MywgcHVibGlzaGVyQ291bnRyaWVzKSkKCmBgYAoKCgpgYGB7cn0KZGVuZW1lIDwtIFNFRVJfY291bnRyaWVzICU+JSAKICBnYXRoZXIoa2V5ID0gIkNvdW50cnkiLCB2YWx1ZSA9ICJOdW1iZXIiLCAtYygxOjMpKSAlPiUgCiAgZ3JvdXBfYnkoQ291bnRyeSwgeWVhcikgJT4lIAogIHN1bW1hcmlzZSh0b3RhbCA9IHN1bShOdW1iZXIpKQpgYGAKCgpgYGB7cn0KZGVuZW1lICU+JSAKICBmaWx0ZXIoeWVhciAhPSAibmEiKSAlPiUKICBmaWx0ZXIoeWVhciAhPSAiMjAxNyIpICU+JSAKICBmaWx0ZXIoeWVhciAhPSAiMjAxOCIpICU+JSAKZ2dwbG90KCkgKwogIGFlcyh5ID0gdG90YWwsIHggPSB5ZWFyLCBncm91cCA9IENvdW50cnksIGNvbG9yID0gQ291bnRyeSkgKwogIGdlb21fbGluZSgpICsgCiAgZ3VpZGVzKGZpbGw9RkFMU0UsIGNvbG9yPUZBTFNFKSArCiAgdGhlbWUoYXhpcy50ZXh0LnggPSBlbGVtZW50X3RleHQoYW5nbGUgPSA5MCwgaGp1c3QgPSAxKSkKYGBgCgoKYGBge3J9ClVTQW5hbWVzIDwtIG5hbWVzKFNFRVJfY291bnRyaWVzKSAlaW4lIHN0YXRlLm5hbWUKCk90aGVycyA8LSBzZXRkaWZmKG5hbWVzKFNFRVJfY291bnRyaWVzWy1jKDE6MyldKSwgYyhVU0FuYW1lcywiVW5pdGVkIFN0YXRlcyIsICJDaGluYSIpKQoKCmRlbmVtZTIgPC0gU0VFUl9jb3VudHJpZXMgJT4lIAogIG11dGF0ZSgKICAgIHN1bVVTQSA9IHJvd1N1bXMoCiAgICAgIHNlbGVjdCguLCBvbmVfb2YoVVNBbmFtZXMpLCBgVW5pdGVkIFN0YXRlc2ApCiAgICAgICkKICAgICkgJT4lIAptdXRhdGUoCiAgICBzdW1PdGhlcnMgPSByb3dTdW1zKAogICAgICBzZWxlY3QoLiwgb25lX29mKE90aGVycykpCiAgICAgICkKICAgICkgJT4lIAogIHNlbGVjdChQTUlELCB5ZWFyLCBDaGluYSwgVVNBID0gc3VtVVNBLCBPdGhlcnMgPSBzdW1PdGhlcnMpCgpgYGAKCmBgYHtyfQpkZW5lbWUzIDwtIGRlbmVtZTIgJT4lIAogIGdhdGhlcihrZXkgPSAiQ291bnRyeSIsIHZhbHVlID0gIk51bWJlciIsIC1jKDE6MikpICU+JSAKICBncm91cF9ieShQTUlELCBDb3VudHJ5LCB5ZWFyKSAlPiUgCiAgc3VtbWFyaXNlKHRvdGFsID0gc3VtKE51bWJlcikpICU+JSAKICBmaWx0ZXIoeWVhciAhPSAibmEiKSAlPiUKICBmaWx0ZXIoeWVhciAhPSAiMjAxNyIpICU+JSAKICBmaWx0ZXIoeWVhciAhPSAiMjAxOCIpICU+JSAKICBmaWx0ZXIodG90YWwgIT0gIjAiKQpgYGAKCgpgYGB7cn0KIyB3aGljaChkdXBsaWNhdGVkKGRlbmVtZTMkUE1JRCkpCiMgd2hpY2goZHVwbGljYXRlZChkZW5lbWUzJFBNSUQpKS0xCgojIGRlbmVtZTNbd2hpY2goZHVwbGljYXRlZChkZW5lbWUzJFBNSUQpKSxdCgp0b2dldGhlciA8LSBiaW5kX2NvbHMoCkZpcnN0ID0gZGVuZW1lMyRDb3VudHJ5W3doaWNoKGR1cGxpY2F0ZWQoZGVuZW1lMyRQTUlEKSldLApTZWNvbmQgPSBkZW5lbWUzJENvdW50cnlbd2hpY2goZHVwbGljYXRlZChkZW5lbWUzJFBNSUQpKS0xXQopCgp0YWJsZSh0b2dldGhlciRGaXJzdCwgdG9nZXRoZXIkU2Vjb25kKSAlPiUgYWRkbWFyZ2lucygpCmJpbmRfY29scygKCmBgYAoKCgpgYGB7cn0KZGVuZW1lNCA8LSBkZW5lbWUyICU+JSAKICBnYXRoZXIoa2V5ID0gIkNvdW50cnkiLCB2YWx1ZSA9ICJOdW1iZXIiLCAtYygxOjIpKSAlPiUgCiAgZ3JvdXBfYnkoQ291bnRyeSwgeWVhcikgJT4lIAogIHN1bW1hcmlzZSh0b3RhbCA9IHN1bShOdW1iZXIpKSAlPiUgCiAgZmlsdGVyKHllYXIgIT0gIm5hIikgJT4lCiAgZmlsdGVyKHllYXIgIT0gIjIwMTciKSAlPiUgCiAgZmlsdGVyKHllYXIgIT0gIjIwMTgiKSAlPiUgCiAgZmlsdGVyKHRvdGFsICE9ICIwIikKYGBgCgoKCmBgYHtyfQpkZW5lbWU0ICU+JSAKCmdncGxvdCgpICsKICBhZXMoeSA9IHRvdGFsLCB4ID0geWVhciwgZ3JvdXAgPSBDb3VudHJ5LCBjb2xvciA9IENvdW50cnkpICsKICBnZW9tX2xpbmUoKSArIAogICMgZ3VpZGVzKGZpbGw9RkFMU0UsIGNvbG9yPUZBTFNFKSArCiAgdGhlbWUoYXhpcy50ZXh0LnggPSBlbGVtZW50X3RleHQoYW5nbGUgPSA5MCwgaGp1c3QgPSAxKSkKYGBgCgoKCjxpZnJhbWUgc3JjPSJodHRwczovL3d3dy5mYWNlYm9vay5jb20vcGx1Z2lucy9wb3N0LnBocD9ocmVmPWh0dHBzJTNBJTJGJTJGd3d3LmZhY2Vib29rLmNvbSUyRnNlcmRhcmJhbGNpbWRwYXRob2xvZ2lzdCUyRnBvc3RzJTJGMTkxOTcwNjU4MTQ3OTAwOSZ3aWR0aD01MDAiIHdpZHRoPSI1MDAiIGhlaWdodD0iNTI5IiBzdHlsZT0iYm9yZGVyOm5vbmU7b3ZlcmZsb3c6aGlkZGVuIiBzY3JvbGxpbmc9Im5vIiBmcmFtZWJvcmRlcj0iMCIgYWxsb3dUcmFuc3BhcmVuY3k9InRydWUiIGFsbG93PSJlbmNyeXB0ZWQtbWVkaWEiPjwvaWZyYW1lPgoKCjxibG9ja3F1b3RlIGNsYXNzPSJ0d2l0dGVyLXR3ZWV0IiBkYXRhLWxhbmc9ImVuIj48cCBsYW5nPSJlbiIgZGlyPSJsdHIiPldoaWxlIGhlbHBpbmcgdGhlIHByZXBhcmF0aW9uIG9mIDxhIGhyZWY9Imh0dHBzOi8vdHdpdHRlci5jb20vaGFzaHRhZy9QQlBhdGg/c3JjPWhhc2gmYW1wO3JlZl9zcmM9dHdzcmMlNUV0ZnciPiNQQlBhdGg8L2E+IEpvdXJuYWwgV2F0Y2ggKDxhIGhyZWY9Imh0dHBzOi8vdC5jby9XaUJzSml4emxjIj5odHRwczovL3QuY28vV2lCc0ppeHpsYzwvYT4pICBJIHRob3VnaHQgdGhhdCBtYW55IFNFRVIgPGEgaHJlZj0iaHR0cHM6Ly90d2l0dGVyLmNvbS9OQ0lDYW5jZXJTdGF0cz9yZWZfc3JjPXR3c3JjJTVFdGZ3Ij5ATkNJQ2FuY2VyU3RhdHM8L2E+IHN0dWRpZXMgYXJlIGZyb20gQ2hpbmEuIFNvIHVzaW5nIGVkaXJlY3QgPGEgaHJlZj0iaHR0cHM6Ly90d2l0dGVyLmNvbS9OQ0JJP3JlZl9zcmM9dHdzcmMlNUV0ZnciPkBOQ0JJPC9hPiBhbmQgPGEgaHJlZj0iaHR0cHM6Ly90d2l0dGVyLmNvbS9oYXNodGFnL1JTdGF0cz9zcmM9aGFzaCZhbXA7cmVmX3NyYz10d3NyYyU1RXRmdyI+I1JTdGF0czwvYT4gSSBkcmF3IHRoZSBhdHRhY2hlZCBncmFwaC4gV2hhdCBkbyB5b3UgdGhpbms/IERvIENoaW5lc2UgZG8gcmVzZWFyY2ggb24gU0VFUiB0aGF0IG11Y2g/IDxhIGhyZWY9Imh0dHBzOi8vdC5jby8zT3A1cjlvZmJLIj5waWMudHdpdHRlci5jb20vM09wNXI5b2ZiSzwvYT48L3A+Jm1kYXNoOyBTZXJkYXIgQmFsY8SxIChAc2VyZGFyYmFsY2kpIDxhIGhyZWY9Imh0dHBzOi8vdHdpdHRlci5jb20vc2VyZGFyYmFsY2kvc3RhdHVzLzEwNDg2NjMzMDI5MTY3ODgyMjQ/cmVmX3NyYz10d3NyYyU1RXRmdyI+T2N0b2JlciA2LCAyMDE4PC9hPjwvYmxvY2txdW90ZT48c2NyaXB0IGFzeW5jIHNyYz0iaHR0cHM6Ly9wbGF0Zm9ybS50d2l0dGVyLmNvbS93aWRnZXRzLmpzIiBjaGFyc2V0PSJ1dGYtOCI+PC9zY3JpcHQ+CgoKCgo8IS0tIGBgYHtyIFNlYXJjaCBQdWJNZWQgd3JpdGUgMjAxOCBkYXRhIGFzIHhtbCwgZXZhbD1GQUxTRSwgaW5jbHVkZT1GQUxTRX0gLS0+CjwhLS0gbXlUZXJtIDwtIHJzdHVkaW9hcGk6OnRlcm1pbmFsQ3JlYXRlKHNob3cgPSBGQUxTRSkgLS0+CjwhLS0gcnN0dWRpb2FwaTo6dGVybWluYWxTZW5kKCAtLT4KPCEtLSAgICAgbXlUZXJtLCAtLT4KPCEtLSAgICAgImVzZWFyY2ggLWRiIHB1Ym1lZCAtcXVlcnkgXCJUdXJrZXlbQWZmaWxpYXRpb25dXCIgLWRhdGV0eXBlIFBEQVQgLW1pbmRhdGUgMjAxOCAtbWF4ZGF0ZSAzMDAwIHwgZWZldGNoIC1mb3JtYXQgeG1sID4gZGF0YS9UdXJrZXlfMjAxOC54bWwgXG4iIC0tPgo8IS0tICkgLS0+CjwhLS0gU3lzLnNsZWVwKDEpIC0tPgo8IS0tIHJlcGVhdCB7IC0tPgo8IS0tICAgICBTeXMuc2xlZXAoMC4xKSAtLT4KPCEtLSAgICAgaWYgKHJzdHVkaW9hcGk6OnRlcm1pbmFsQnVzeShteVRlcm0pID09IEZBTFNFKSB7IC0tPgo8IS0tICAgICAgICAgcHJpbnQoIkNvZGUgRXhlY3V0ZWQiKSAtLT4KPCEtLSAgICAgICAgIGJyZWFrIC0tPgo8IS0tICAgICB9IC0tPgo8IS0tIH0gLS0+CjwhLS0gYGBgIC0tPgoKCgoKPCEtLSBgYGB7ciBTZWFyY2ggUHViTWVkIHdyaXRlIGFsbCBkYXRhIGFzIHhtbCwgZXZhbD1GQUxTRSwgaW5jbHVkZT1GQUxTRX0gLS0+CjwhLS0gbXlUZXJtIDwtIHJzdHVkaW9hcGk6OnRlcm1pbmFsQ3JlYXRlKHNob3cgPSBGQUxTRSkgLS0+CjwhLS0gcnN0dWRpb2FwaTo6dGVybWluYWxTZW5kKCAtLT4KPCEtLSAgICAgbXlUZXJtLCAtLT4KPCEtLSAgICAgImVzZWFyY2ggLWRiIHB1Ym1lZCAtcXVlcnkgXCJUdXJrZXlbQWZmaWxpYXRpb25dXCIgLWRhdGV0eXBlIFBEQVQgLW1pbmRhdGUgMTgwMCAtbWF4ZGF0ZSAzMDAwIHwgZWZldGNoIC1mb3JtYXQgeG1sID4gZGF0YS9UdXJrZXlfYWxsLnhtbCBcbiIgLS0+CjwhLS0gKSAtLT4KPCEtLSBTeXMuc2xlZXAoMSkgLS0+CjwhLS0gcmVwZWF0IHsgLS0+CjwhLS0gICAgIFN5cy5zbGVlcCgwLjEpIC0tPgo8IS0tICAgICBpZiAocnN0dWRpb2FwaTo6dGVybWluYWxCdXN5KG15VGVybSkgPT0gRkFMU0UpIHsgLS0+CjwhLS0gICAgICAgICBwcmludCgiQ29kZSBFeGVjdXRlZCIpIC0tPgo8IS0tICAgICAgICAgYnJlYWsgLS0+CjwhLS0gICAgIH0gLS0+CjwhLS0gfSAtLT4KPCEtLSBgYGAgLS0+CgoKCgoKPCEtLSBgYGB7ciBTZWFyY2ggUHViTWVkIGdldCAyMDE4IGRhdGEgb24gdGhlIGZseSwgZXZhbD1GQUxTRSwgaW5jbHVkZT1GQUxTRX0gLS0+CjwhLS0gbXlUZXJtIDwtIHJzdHVkaW9hcGk6OnRlcm1pbmFsQ3JlYXRlKHNob3cgPSBGQUxTRSkgLS0+CjwhLS0gcnN0dWRpb2FwaTo6dGVybWluYWxTZW5kKCAtLT4KPCEtLSAgICAgbXlUZXJtLCAtLT4KPCEtLSAgICAgImVzZWFyY2ggLWRiIHB1Ym1lZCAtcXVlcnkgXCJUdXJrZXlbQWZmaWxpYXRpb25dXCIgLWRhdGV0eXBlIFBEQVQgLW1pbmRhdGUgMjAxOCAtbWF4ZGF0ZSAzMDAwIHwgZWZldGNoIC1mb3JtYXQgeG1sIHwgeHRyYWN0ICAtcGF0dGVybiBQdWJtZWRBcnRpY2xlIC1lbGVtZW50IE1lZGxpbmVDaXRhdGlvbi9QTUlEIFB1YkRhdGUvWWVhciBKb3VybmFsL0lTU04gSVNPQWJicmV2aWF0aW9uPiBkYXRhL29udGhlZmx5X1R1cmtleV8yMDE4LmNzdiBcbiIgLS0+CjwhLS0gKSAtLT4KPCEtLSBTeXMuc2xlZXAoMSkgLS0+CjwhLS0gcmVwZWF0IHsgLS0+CjwhLS0gICAgIFN5cy5zbGVlcCgwLjEpIC0tPgo8IS0tICAgICBpZiAocnN0dWRpb2FwaTo6dGVybWluYWxCdXN5KG15VGVybSkgPT0gRkFMU0UpIHsgLS0+CjwhLS0gICAgICAgICBwcmludCgiQ29kZSBFeGVjdXRlZCIpIC0tPgo8IS0tICAgICAgICAgYnJlYWsgLS0+CjwhLS0gICAgIH0gLS0+CjwhLS0gfSAtLT4KPCEtLSBgYGAgLS0+CgoKCjwhLS0gYGBge3IgU2VhcmNoIFB1Yk1lZCBnZXQgYWxsIGRhdGEgb24gdGhlIGZseSwgZXZhbD1GQUxTRSwgaW5jbHVkZT1GQUxTRX0gLS0+CjwhLS0gbXlUZXJtIDwtIHJzdHVkaW9hcGk6OnRlcm1pbmFsQ3JlYXRlKHNob3cgPSBGQUxTRSkgLS0+CjwhLS0gcnN0dWRpb2FwaTo6dGVybWluYWxTZW5kKCAtLT4KPCEtLSAgICAgbXlUZXJtLCAtLT4KPCEtLSAgICAgImVzZWFyY2ggLWRiIHB1Ym1lZCAtcXVlcnkgXCJUdXJrZXlbQWZmaWxpYXRpb25dXCIgLWRhdGV0eXBlIFBEQVQgLW1pbmRhdGUgMTgwMCAtbWF4ZGF0ZSAzMDAwIHwgZWZldGNoIC1mb3JtYXQgeG1sIHwgeHRyYWN0ICAtcGF0dGVybiBQdWJtZWRBcnRpY2xlIC1lbGVtZW50IE1lZGxpbmVDaXRhdGlvbi9QTUlEIFB1YkRhdGUvWWVhciBKb3VybmFsL0lTU04gSVNPQWJicmV2aWF0aW9uPiBkYXRhL29udGhlZmx5X1R1cmtleV9hbGwuY3N2IFxuIiAtLT4KPCEtLSApIC0tPgo8IS0tIFN5cy5zbGVlcCgxKSAtLT4KPCEtLSByZXBlYXQgeyAtLT4KPCEtLSAgICAgU3lzLnNsZWVwKDAuMSkgLS0+CjwhLS0gICAgIGlmIChyc3R1ZGlvYXBpOjp0ZXJtaW5hbEJ1c3kobXlUZXJtKSA9PSBGQUxTRSkgeyAtLT4KPCEtLSAgICAgICAgIHByaW50KCJDb2RlIEV4ZWN1dGVkIikgLS0+CjwhLS0gICAgICAgICBicmVhayAtLT4KPCEtLSAgICAgfSAtLT4KPCEtLSB9IC0tPgo8IS0tIGBgYCAtLT4KCgoKPCEtLSBKb3VybmFsIE5hbWVzIGFyZSBleHRyYWN0ZWQgZnJvbSB4bWwuIC0tPgoKCgo8IS0tIGBgYHtyIGV4dHJhY3Qgam91cm5hbCBuYW1lcyBmcm9tIDIwMTggeG1sLCBldmFsPUZBTFNFLCBtZXNzYWdlPUZBTFNFLCB3YXJuaW5nPUZBTFNFLCBpbmNsdWRlPUZBTFNFfSAtLT4KPCEtLSBteVRlcm0gPC0gcnN0dWRpb2FwaTo6dGVybWluYWxDcmVhdGUoc2hvdyA9IEZBTFNFKSAtLT4KPCEtLSByc3R1ZGlvYXBpOjp0ZXJtaW5hbFNlbmQoIC0tPgo8IS0tIG15VGVybSwgLS0+CjwhLS0gInh0cmFjdCAtaW5wdXQgZGF0YS9UdXJrZXlfMjAxOC54bWwgLXBhdHRlcm4gUHVibWVkQXJ0aWNsZSAtZWxlbWVudCBNZWRsaW5lQ2l0YXRpb24vUE1JRCBQdWJEYXRlL1llYXIgSm91cm5hbC9JU1NOIElTT0FiYnJldmlhdGlvbiA+IGRhdGEvVHVya2V5MjAxOC5jc3YgXG4iIC0tPgo8IS0tICkgLS0+CjwhLS0gU3lzLnNsZWVwKDEpIC0tPgo8IS0tIHJlcGVhdCB7IC0tPgo8IS0tIFN5cy5zbGVlcCgwLjEpIC0tPgo8IS0tIGlmIChyc3R1ZGlvYXBpOjp0ZXJtaW5hbEJ1c3kobXlUZXJtKSA9PSBGQUxTRSkgeyAtLT4KPCEtLSBwcmludCgiQ29kZSBFeGVjdXRlZCIpIC0tPgo8IS0tIGJyZWFrIC0tPgo8IS0tIH0gLS0+CjwhLS0gfSAtLT4KPCEtLSBgYGAgLS0+CgoKPCEtLSBgYGB7ciBleHRyYWN0IGpvdXJuYWwgbmFtZXMgZnJvbSBhbGwgZGF0YSB4bWwsIG1lc3NhZ2U9RkFMU0UsIHdhcm5pbmc9RkFMU0V9IC0tPgo8IS0tIG15VGVybSA8LSByc3R1ZGlvYXBpOjp0ZXJtaW5hbENyZWF0ZShzaG93ID0gRkFMU0UpIC0tPgo8IS0tIHJzdHVkaW9hcGk6OnRlcm1pbmFsU2VuZCggLS0+CjwhLS0gbXlUZXJtLCAtLT4KPCEtLSAieHRyYWN0IC1pbnB1dCBkYXRhL1R1cmtleV9hbGwueG1sIC1wYXR0ZXJuIFB1Ym1lZEFydGljbGUgLXNlcCAnICcgLWRlZiAnbmEnIC1lbGVtZW50IE1lZGxpbmVDaXRhdGlvbi9QTUlEIEpvdXJuYWwvSVNTTiBJU09BYmJyZXZpYXRpb24gUHViRGF0ZS9ZZWFyID4gZGF0YS9UdXJrZXlBbGwuY3N2IFxuIiAtLT4KPCEtLSApIC0tPgo8IS0tIFN5cy5zbGVlcCgxKSAtLT4KPCEtLSByZXBlYXQgeyAtLT4KPCEtLSBTeXMuc2xlZXAoMC4xKSAtLT4KPCEtLSBpZiAocnN0dWRpb2FwaTo6dGVybWluYWxCdXN5KG15VGVybSkgPT0gRkFMU0UpIHsgLS0+CjwhLS0gcHJpbnQoIkNvZGUgRXhlY3V0ZWQiKSAtLT4KPCEtLSBicmVhayAtLT4KPCEtLSB9IC0tPgo8IS0tIH0gLS0+CjwhLS0gYGBgIC0tPgoKCgo8IS0tIC0tLS0gLS0+CgoKPCEtLSAjIyBSZXRyaWV2YWwgb2YgRGF0YSBvZiBQcm9wZXJ0aWVzIG9mIEpvdXJuYWxzIC0tPgoKCgo8IS0tIFtubG1jYXRhbG9nX3Jlc3VsdF9qb3VybmFsc19wbWMueG1sXShodHRwczovL3d3dy5uY2JpLm5sbS5uaWguZ292L3BvcnRhbC91dGlscy9maWxlX2JhY2tlbmQuY2dpP0RiPW5sbWNhdGFsb2cmSGlzdG9yeUlkPU5DSURfMV82OTc1NTI3OF8xMzAuMTQuMTguOTdfNTU1NV8xNTM0NTg1OTM0XzM1OTA2MDY3ODNfME1ldEEwX1NfSFN0b3JlJlF1ZXJ5S2V5PTImU29ydD1QdWJEYXRlJkZpbHRlcj1hbGwmQ29tcGxldGVSZXN1bHRDb3VudD0yNTU5Jk1vZGU9ZmlsZSZWaWV3PXhtbCZwJGw9RW1haWwmcG9ydGFsU25hcHNob3Q9JTJGcHJvamVjdHMlMkZlbnRyZXolMkZwdWJtZWQlMkZQdWJNZWRHcm91cEAxLjEzNiZCYXNlVXJsPSZQb3J0TmFtZT1saXZlJlJvb3RUYWc9TkxNQ2F0YWxvZ1JlY29yZFNldCZEb2NUeXBlPU5MTUNhdGFsb2dSZWNvcmRTZXQlMjBQVUJMSUMlMjAlMjItJTJGJTJGTkxNJTJGJTJGRFREJTIwTkxNQ2F0YWxvZ1JlY29yZFNldCwlMjAxc3QlMjBKdW5lJTIwMjAxNyUyRiUyRkVOJTIyJTIwJTIyaHR0cHM6Ly93d3cubmxtLm5paC5nb3YvZGF0YWJhc2VzL2R0ZC9ubG1jYXRhbG9ncmVjb3Jkc2V0XzE3MDYwMS5kdGQlMjImRmlsZU5hbWU9JkNvbnRlbnRUeXBlPXhtbCkgLS0+CgoKPCEtLSBbbmxtY2F0YWxvZ19yZXN1bHRfY3VycmVudGx5aW5kZXhlZC54bWxdKGh0dHBzOi8vd3d3Lm5jYmkubmxtLm5paC5nb3YvcG9ydGFsL3V0aWxzL2ZpbGVfYmFja2VuZC5jZ2k/RGI9bmxtY2F0YWxvZyZIaXN0b3J5SWQ9TkNJRF8xXzY5NzU1Mjc4XzEzMC4xNC4xOC45N181NTU1XzE1MzQ1ODU5MzRfMzU5MDYwNjc4M18wTWV0QTBfU19IU3RvcmUmUXVlcnlLZXk9MSZTb3J0PVB1YkRhdGUmRmlsdGVyPWFsbCZDb21wbGV0ZVJlc3VsdENvdW50PTUyNDImTW9kZT1maWxlJlZpZXc9eG1sJnAkbD1FbWFpbCZwb3J0YWxTbmFwc2hvdD0lMkZwcm9qZWN0cyUyRmVudHJleiUyRnB1Ym1lZCUyRlB1Yk1lZEdyb3VwQDEuMTM2JkJhc2VVcmw9JlBvcnROYW1lPWxpdmUmUm9vdFRhZz1OTE1DYXRhbG9nUmVjb3JkU2V0JkRvY1R5cGU9TkxNQ2F0YWxvZ1JlY29yZFNldCUyMFBVQkxJQyUyMCUyMi0lMkYlMkZOTE0lMkYlMkZEVEQlMjBOTE1DYXRhbG9nUmVjb3JkU2V0LCUyMDFzdCUyMEp1bmUlMjAyMDE3JTJGJTJGRU4lMjIlMjAlMjJodHRwczovL3d3dy5ubG0ubmloLmdvdi9kYXRhYmFzZXMvZHRkL25sbWNhdGFsb2dyZWNvcmRzZXRfMTcwNjAxLmR0ZCUyMiZGaWxlTmFtZT0mQ29udGVudFR5cGU9eG1sKSAtLT4KCgo8IS0tIFtzY2ltYWdvanIyMDE3LmNzdl0oaHR0cHM6Ly93d3cuc2NpbWFnb2pyLmNvbS9qb3VybmFscmFuay5waHA/b3V0PXhscykgLS0+Cgo8IS0tIFtzY2ltYWdvanIyMDE3LXdvcy5jc3ZdKGh0dHBzOi8vd3d3LnNjaW1hZ29qci5jb20vam91cm5hbHJhbmsucGhwP3dvcz10cnVlJm91dD14bHMpIC0tPgoKCjwhLS0gIVtdKGltYWdlcy9zY2lkYXRhLnBuZykgLS0+CgoKCgoKPCEtLSAtLS0gLS0+CgoKCgoKCjwhLS0gIyMgQW5hbHlzaXMgLS0+Cgo8IS0tIGBgYHtyIE9yZ2FuaXplIEpvdXJuYWwgRGF0YSAxLCBtZXNzYWdlPUZBTFNFLCB3YXJuaW5nPUZBTFNFfSAtLT4KPCEtLSBsaWJyYXJ5KHRpZHl2ZXJzZSkgLS0+CjwhLS0gbGlicmFyeShyZWFkcikgLS0+Cgo8IS0tIFR1cmtleUFsbCA8LSByZWFkX2RlbGltKCJkYXRhL1R1cmtleUFsbC5jc3YiLCAgLS0+CjwhLS0gICAgICJcdCIsIGVzY2FwZV9kb3VibGUgPSBGQUxTRSwgY29sX25hbWVzID0gRkFMU0UsIC0tPgo8IS0tICAgICBuYSA9ICJuYSIsIHRyaW1fd3MgPSBUUlVFKSAtLT4KCjwhLS0gbmFtZXMoVHVya2V5QWxsKSA8LSBjKCJQTUlEIiwgIklTU04iLCAiSm91cm5hbE5hbWUiLCAiWWVhciIpIC0tPgoKPCEtLSAjIGRpbShUdXJrZXlBbGwpWzFdIC0tPgoKPCEtLSAjIG1pbihUdXJrZXlBbGxbLDRdLCBuYS5ybSA9IFRSVUUpIC0tPgoKPCEtLSAjIG1heChUdXJrZXlBbGxbLDRdLCBuYS5ybSA9IFRSVUUpIC0tPgoKPCEtLSAjIGdsaW1wc2UoVHVya2V5QWxsKSAtLT4KCjwhLS0gYGBgIC0tPgoKCgo8IS0tIGBgYHtyIE9yZ2FuaXplIEpvdXJuYWwgRGF0YSAyfSAtLT4KPCEtLSB1bmlxdWVKb3VybmFscyA8LSBUdXJrZXlBbGwgJT4lICAtLT4KPCEtLSAgICAgc2VsZWN0KEpvdXJuYWxOYW1lLCBJU1NOKSAlPiUgIC0tPgo8IS0tICAgICB1bmlxdWUoKSAtLT4KCjwhLS0gIyBkaW0odW5pcXVlSm91cm5hbHMpWzFdIC0tPgoKPCEtLSBgYGAgLS0+CgoKPCEtLSBgYGB7ciBPcmdhbml6ZSBKb3VybmFsIERhdGEgM30gLS0+Cgo8IS0tIFR1cmtleUFsbDIgPC0gVHVya2V5QWxsICU+JSAgLS0+CjwhLS0gICAgIG11dGF0ZShKb3VybmFsID0gcGFzdGUoSm91cm5hbE5hbWUsIElTU04sIHNlcCA9ICIgSVNTTiAiKSkgLS0+Cgo8IS0tIEFydGljbGVzQnlZZWFyIDwtIFR1cmtleUFsbDIgJT4lICAtLT4KPCEtLSAgICAgZ3JvdXBfYnkoSm91cm5hbCwgWWVhcikgJT4lICAtLT4KPCEtLSAgICAgc3VtbWFyaXNlKG4gPSBuKCkpIC0tPgoKPCEtLSBBcnRpY2xlc0J5WWVhciA8LSBBcnRpY2xlc0J5WWVhciAlPiUgIC0tPgo8IS0tICAgICBzcHJlYWQoa2V5ID0gWWVhciwgdmFsdWUgPSBuKSAtLT4KCjwhLS0gVHVya2V5QWxsMiA8LSBUdXJrZXlBbGwyICU+JSAgLS0+CjwhLS0gICAgIHNlbGVjdChKb3VybmFsLCBKb3VybmFsTmFtZSwgSVNTTikgJT4lICAtLT4KPCEtLSAgICAgdW5pcXVlKCkgLS0+Cgo8IS0tIEFydGljbGVzQnlZZWFyIDwtIGxlZnRfam9pbihBcnRpY2xlc0J5WWVhciwgVHVya2V5QWxsMiwgYnkgPSAiSm91cm5hbCIpICAtLT4KCjwhLS0gQXJ0aWNsZXNCeVllYXIgPC0gQXJ0aWNsZXNCeVllYXIgJT4lIC0tPgo8IS0tICAgICBzZWxlY3QoIC0tPgo8IS0tICAgICBKb3VybmFsLCBKb3VybmFsTmFtZSwgSVNTTiwgZXZlcnl0aGluZygpIC0tPgo8IS0tICAgICApIC0tPgoKPCEtLSBgYGAgLS0+CgoKPCEtLSBgYGB7ciBzY2ltYWdvanIyMDE3fSAtLT4KCjwhLS0gYGBgIC0tPgoKCgo8IS0tIC1lbGVtZW50IE1lZGxpbmVUQSAgTkxNQ2F0YWxvZ1JlY29yZC9ObG1VbmlxdWVJRCAtZGVmICduYScgLXNlcCAnXHQnIC1ibG9jayBUaXRsZUFsdGVybmF0ZS9UaXRsZSAgIC1lbGVtZW50IFRpdGxlQWx0ZXJuYXRlL1RpdGxlICAgIC0tPgoKPCEtLSAieHRyYWN0IC1pbnB1dCBkYXRhL25sbWNhdGFsb2dfcmVzdWx0X2N1cnJlbnRseWluZGV4ZWQueG1sIC1wYXR0ZXJuIE5DQklDYXRhbG9nUmVjb3JkIC1lbGVtZW50IElTU05MaW5raW5nIC1kZWYgJ25hJyAtc2VwICcgJyAtYmxvY2sgVGl0bGVBbHRlcm5hdGUvVGl0bGUgLWlmIFRpdGxlQWx0ZXJuYXRlL1RpdGxlQFNvcnQgLWVxdWFscyBOIC1lbGVtZW50IFRpdGxlQWx0ZXJuYXRlL1RpdGxlICA+IGRhdGEvbmxtY2F0YWxvZy5jc3YgXG4iIC0tPgoKPCEtLSAtc2VwICdcdCcgIC0tPgoKCjwhLS0gTkxNQ2F0YWxvZ1JlY29yZC9ObG1VbmlxdWVJRCBJU1NOTGlua2luZyAtLT4KCjwhLS0gYGBge3IgbmxtY2F0YWxvZywgbWVzc2FnZT1GQUxTRSwgd2FybmluZz1GQUxTRX0gLS0+CjwhLS0gbXlUZXJtIDwtIHJzdHVkaW9hcGk6OnRlcm1pbmFsQ3JlYXRlKHNob3cgPSBGQUxTRSkgLS0+CjwhLS0gcnN0dWRpb2FwaTo6dGVybWluYWxTZW5kKCAtLT4KPCEtLSBteVRlcm0sIC0tPgo8IS0tICJ4dHJhY3QgLWlucHV0IGRhdGEvbmxtY2F0YWxvZ19yZXN1bHRfY3VycmVudGx5aW5kZXhlZC54bWwgLXBhdHRlcm4gTkNCSUNhdGFsb2dSZWNvcmQgLXRhYiAnfCcgLWVsZW1lbnQgTkxNQ2F0YWxvZ1JlY29yZC9ObG1VbmlxdWVJRCAtYmxvY2sgSVNTTkxpbmtpbmcgLXRhYiAnfCcgLWVsZW1lbnQgSVNTTkxpbmtpbmcgLWJsb2NrIFRpdGxlIC1pZiBUaXRsZUBTb3J0IC1lcXVhbHMgTiAtZGVmICduYScgLXRhYiAnfCcgLWVsZW1lbnQgVGl0bGVBbHRlcm5hdGUvVGl0bGUgPiBkYXRhL25sbWNhdGFsb2cuY3N2IFxuIiAtLT4KPCEtLSApIC0tPgo8IS0tIFN5cy5zbGVlcCgxKSAtLT4KPCEtLSByZXBlYXQgeyAtLT4KPCEtLSBTeXMuc2xlZXAoMC4xKSAtLT4KPCEtLSBpZiAocnN0dWRpb2FwaTo6dGVybWluYWxCdXN5KG15VGVybSkgPT0gRkFMU0UpIHsgLS0+CjwhLS0gcHJpbnQoIkNvZGUgRXhlY3V0ZWQiKSAtLT4KPCEtLSBicmVhayAtLT4KPCEtLSB9IC0tPgo8IS0tIH0gLS0+Cgo8IS0tIGBgYCAgLS0+CgoKPCEtLSBgYGB7cn0gLS0+CjwhLS0gbGlicmFyeShyZWFkcikgLS0+CjwhLS0gbmxtY2F0YWxvZyA8LSByZWFkX2RlbGltKCJkYXRhL25sbWNhdGFsb2cuY3N2IiwgIC0tPgo8IS0tICAgICAgICAgICAgICAgICAgICAgICAgICBkZWxpbSA9ICJ8IiwgLS0+CjwhLS0gICAgICAgICAgICAgICAgICAgICAgICAgIGVzY2FwZV9kb3VibGUgPSBGQUxTRSwgLS0+CjwhLS0gICAgICAgICAgICAgICAgICAgICAgICAgIGNvbF9uYW1lcyA9IEZBTFNFLCAgLS0+CjwhLS0gICAgICAgICAgICAgICAgICAgICAgICAgIHRyaW1fd3MgPSBUUlVFKSAtLT4KCjwhLS0gYGBgIC0tPgoKPCEtLSBgYGB7cn0gLS0+Cgo8IS0tIGxpYnJhcnkoeG1sMikgLS0+CjwhLS0gZGF0YSA8LSByZWFkX3htbCgiZGF0YS9ubG1jYXRhbG9nX3Jlc3VsdF9jdXJyZW50bHlpbmRleGVkLnhtbCIpIC0tPgoKPCEtLSAjIFBvaW50IGxvY2F0aW9ucyAtLT4KPCEtLSBwb2ludCA8LSBkYXRhICU+JSB4bWxfZmluZF9hbGwoIi8vcG9pbnRlciIpIC0tPgo8IS0tIHBvaW50ICU+JSB4bWxfYXR0cigibGF0aXR1ZGUiKSAlPiUgYXMubnVtZXJpYygpIC0tPgo8IS0tIHBvaW50ICU+JSB4bWxfYXR0cigibG9uZ2l0dWRlIikgJT4lIGFzLm51bWVyaWMoKSAtLT4KCjwhLS0gIyBTdGFydCB0aW1lIC0tPgo8IS0tIGRhdGEgJT4lICAtLT4KPCEtLSAgIHhtbF9maW5kX2FsbCgiLy9zdGFydC12YWxpZC10aW1lIikgJT4lICAtLT4KPCEtLSAgIHhtbF90ZXh0KCkgLS0+Cgo8IS0tICMgVGVtcGVyYXR1cmUgLS0+CjwhLS0gZGF0YSAlPiUgIC0tPgo8IS0tICAgeG1sX2ZpbmRfYWxsKCIvL3RlbXBlcmF0dXJlW0B0eXBlPSdob3VybHknXS92YWx1ZSIpICU+JSAgLS0+CjwhLS0gICB4bWxfdGV4dCgpICU+JSAgLS0+CjwhLS0gICBhcy5pbnRlZ2VyKCkgLS0+CgoKCjwhLS0gYGBgIC0tPgoKCjwhLS0gLS0tIC0tPgoKPCEtLSAjIyBSZXN1bHRzIC0tPgoKPCEtLSAtIFB1Yk1lZCdkZSAqKmByIG1pbihUdXJrZXlBbGxbLDRdLCBuYS5ybSA9IFRSVUUpYC1gciBtYXgoVHVya2V5QWxsWyw0XSwgbmEucm0gPSBUUlVFKWAqKiB0YXJpaGxlcmkgYXJhc8SxbmRhLCAqVMO8cmtpeWUqIGFkcmVzbGkgKipgciBkaW0oVHVya2V5QWxsKVsxXWAqKiBhZGV0IHlhecSxbiBtZXZjdXR0dXIuIC0tPgoKPCEtLSAtIFB1Yk1lZCdkZSAqKmByIG1pbihUdXJrZXlBbGxbLDRdLCBuYS5ybSA9IFRSVUUpYC1gciBtYXgoVHVya2V5QWxsWyw0XSwgbmEucm0gPSBUUlVFKWAqKiB0YXJpaGxlcmkgYXJhc8SxbmRhLCAqVMO8cmtpeWUqIGFkcmVzbGkgeWF5xLFubGFyICoqYHIgZGltKHVuaXF1ZUpvdXJuYWxzKVsxXWAqKiBmYXJrbMSxIGRlcmdpZGUgeWF5xLFtbGFubcSxxZ90xLFyLiAtLT4KCgoKCgo8IS0tIC0tLSAtLT4KCjwhLS0gIyMgRGlzY3Vzc2lvbiAtLT4KCjwhLS0gdMO8cmtpeWUgYWRyZXNsaSBvbHVwIGRhIHB1Ym1lZGRlIHllciBhbGFuIG1ha2FsZWxlciBoYW5naSBkZXJnaWxlcmRlIGthw6dhciBhZGV0IHlhecSxbmxhbm3EscWfIC0tPgoKCjwhLS0gVGhlIHJldHJpZXZlZCBpbmZvcm1hdGlvbiB3YXMgY29tcGlsZWQgaW4gYSB0YWJsZS4gLS0+CgoKCgoKPCEtLSAqKk1ldGhvZHM6KiogLS0+CgoKCgoKCgoKCjwhLS0gKipSZXN1bHQ6KiogLS0+CgoKPCEtLSBgYGB7ciBwbG90IDF9IC0tPgo8IS0tIGdncGxvdChkYXRhID0gYXJ0aWNsZXNfcGVyX2pvdXJuYWwsIGFlcyh4ID0gSm91cm5hbCwgeSA9IG4sIGdyb3VwID0gQ291bnRyeSwgLS0+CjwhLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbG91ciA9IENvdW50cnksIHNoYXBlID0gQ291bnRyeSwgLS0+CjwhLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldmVscyA9IENvdW50cnkgLS0+CjwhLS0gKSkgKyAtLT4KPCEtLSAgICAgZ2VvbV9wb2ludCgpICsgLS0+CjwhLS0gICAgIGxhYnMoeCA9ICJKb3VybmFscyB3aXRoIGRlY3JlYXNpbmcgaW1wYWN0IGZhY3RvciIsIHkgPSAiTnVtYmVyIG9mIEFydGljbGVzIikgKyAtLT4KPCEtLSAgICAgZ2d0aXRsZSgiUGF0aG9sb2d5IEFydGljbGVzIFBlciBKb3VybmFsIikgKyAgLS0+CjwhLS0gICAgIHRoZW1lKHBsb3QudGl0bGUgPSBlbGVtZW50X3RleHQoaGp1c3QgPSAwLjUpLCAtLT4KPCEtLSAgICAgICAgICAgYXhpcy50ZXh0Lng9ZWxlbWVudF9ibGFuaygpKSAtLT4KCjwhLS0gYGBgIC0tPgoKCjwhLS0gKipDb21tZW50OioqIC0tPgoKCgoKPCEtLSAtLS0gLS0+CgoKPCEtLSAjIyBGZWVkYmFjayAtLT4KCjwhLS0gW1NlcmRhciBCYWxjxLEsIE1ELCBQYXRob2xvZ2lzdF0oaHR0cHM6Ly9naXRodWIuY29tL3NiYWxjaSkgd291bGQgbGlrZSB0byBoZWFyIHlvdXIgZmVlZGJhY2s6IGh0dHBzOi8vZ29vLmdsL2Zvcm1zL1lqR1o1REhndFBsUjFSbkIzIC0tPgoKPCEtLSBUaGlzIGRvY3VtZW50IHdpbGwgYmUgY29udGluaW91c2x5IHVwZGF0ZWQgYW5kIHRoZSBsYXN0IHVwZGF0ZSB3YXMgb24gYHIgU3lzLkRhdGUoKWAuIC0tPgoKPCEtLSAtLS0gLS0+Cgo8IS0tICMjIEJhY2sgdG8gTWFpbiBNZW51IC0tPgoKPCEtLSBbTWFpbiBQYWdlIGZvciBCaWJsaW9ncmFwaGljIEFuYWx5c2lzXShodHRwczovL3NiYWxjaS5naXRodWIuaW8vcHVibWVkL0JpYmxpb2dyYXBoaWNTdHVkaWVzLmh0bWwpIC0tPgoKPCEtLSAtLS0gLS0+